package org.example.reactive.demo2;

import lombok.extern.slf4j.Slf4j;
import reactor.core.publisher.Mono;

/**
 * @author Gong.Yang
 *当上游执行完毕（无论异常、正常），调用Runnable的run
 * doOnTerminate(Runnable onTerminate)
 */
@Slf4j
public class Demo {
    public static void main(String[] args) {
        long startTime = System.nanoTime();
        Mono.just("test")
                .map(x -> x.concat(" append"))
//                .map(x -> {
//                    throw new RuntimeException("异常测试");
//                })
                .doOnTerminate(() -> {//上游异常时下游不再运行，但是此处不受影响
                    long endTime = System.nanoTime();
                    log.info("【运行结束】耗时->{}纳秒", endTime - startTime);
                })
//                .map(x -> {
//                    log.info("【注意看】有日志吗");
//                    return x;
//                })
                .subscribe();
    }
}
